package com.atguigu.mybatis.demo;

import com.atguigu.mybatis.bean.Employee;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;

/**
 * Created by Smexy on 2022/9/6
 *
 *      helloworld案例以查询数据库中指定id的员工为例。
 *
 *      JDBC:   ①有一个Connection
 *              ②准备sql
 *              ③获取一个PrepqredStatement
 *              ④预编译sql，填充占位符
 *              ⑤执行查询，获取返回值
 *              ⑥解析返回值，将返回值封装为Bean
 *              ⑦关闭连接
 *
 *              Connection负责把客户端的SQL发送给Mysql服务端
 *
 *      Mybatis:    ②准备sql. 编写在一个xml文件中。在全局配置中进行注册(告诉mybatis，在某个文件中有sql)
 *
 *              SqlSession:  负责把客户端的SQL发送给Mysql服务端。
 *                              套路代码。
 *
 */
public class HelloWorld
{

    public static void main(String[] args) throws IOException {

            //准备SqlSessionFactory
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

            //获取SqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();

        /*
                使用sqlSession发送sql

                selectOne(String statement, Object parameter)
                    statement: 要发送给mysql的sql语句的id(xml的namespace.sqlid)
                    parameter: 给sql传入的参数
         */
        Object o = sqlSession.selectOne("feichangbang.sql1", 1);

        Employee employee = (Employee) o;

        System.out.println(employee);

        sqlSession.close();


    }
}
